Re: RPC protocol problem?

Jukka Ukkonen (Jukka.Ukkonen@csc.fi)
Thu, 25 Aug 1994 15:03:03 +0300 (EET DST)

Quoting Eric Conrad:
# 
# > I don't have an exploit script, but replacing your portmap with
# > Wietse's would probably not hurt.  Heres the blurb:
# 
# I can Wietse's portmapper easily under SunOS, but other 
# architectures (Solaris, Irix, etc.) will not cooperate.
# 
# Does anyone have any diffs or porting info?  I'll post a summary.

	On Irix-5.2 boxes you have to define at least this...

	#if !defined(SIGCHLD) && defined(SIGCLD)
	#  define SIGCHLD  SIGCLD
	#endif

	Otherwise it will generate a huge amount of zombies (<defunct>
	processes) that have a PTE reserved for their exit status info
	though the child process has completed long ago.

	My reap()-function is also somewhat different from Wietses
	original on Irix-5.2 mostly because I had to re-assign the
	signal handler to ensure I can always catch SIGCHLD.

void
reap()
{
        int status;

        /* while (wait3(&status, WNOHANG, (struct rusage *)NULL) > 0); */
        while (waitpid (-1, &status, WNOHANG) > 0);

        (void) signal (SIGCHLD, reap);
}

	For some reason Irix-5.x seems to need re-initialization of
	the signal handler. Well, this is an old SysV practice. Of
	this I am aware but it still doesn't look like a handy thing
	to my tastes.
	Waitpid() is there just because I wanted to use a POSIX wait-
	family routine when I noticed there was something rotting in
	the SIGCHLD catching.

	Cheers,
		// jau
------
  /    Jukka A. Ukkonen, M.Sc. (tech.) Centre for Scientific Computing
 /__   Internet: ukkonen@csc.fi            Tel:  (Home) +358-0-578628
   /   Internet: jau@cs.tut.fi                   (Work) +358-0-4573208
  v    X.400:    c=fi, admd=fumail, no prmd, org=csc, pn=jukka.ukkonen